//
//  GLAIAPLocale.h
//  Q1SDK_overseas
//
//  Created by geekluo on 2022/7/28.
//

#import <Foundation/Foundation.h>
#import "GLAProduct.h"

NS_ASSUME_NONNULL_BEGIN


@protocol IAPLocaleDelegate <NSObject>
@optional
///内购商品请求全部完成
- (void)IAPProductinfoRequestCompelete;
@end

@interface GLAIAPLocale : NSObject

+ (instancetype)Instance;

/**
 * 预请求内购商品信息（只请求，不实际支付）
 * SDK初始化之后尽早请求，建议请求所有内购项
 * @param productIds  数组，内购项id列表
 * @param delegate  请求完成的代理对象
 */
- (void)preRequestProductInfoWithProductIds:(NSArray <NSString *>*)productIds delegate:(id<IAPLocaleDelegate>)delegate;

/**
 * 获取预先请求到并存储起来的商品信息对象
 * 必须在请求preRequestProductInfoWithProductIds之后请求
 * 尽量留足够的时间待商品请求完成
 * 商品未请求完成或不完整时，需要做对应的处理
 * @param productIds  需要获取的商品信息的内购id，传空时，获取所有已缓存的内购商品对象
 * @return NSDictionary
 *·{
 *  status:3,     请求状态：0：失败     1：成功    2：部分未获取
 *  message：”未开启内购“，   错误原因
 *  products:[NSArray <GLAProduct *>],     商品信息对象数组
 * }
 *
 */
- (NSDictionary *)getCachedProductsWithProductIds:(NSArray <NSString *>*)productIds;



/**
 * 获取缓存的商品对象，SDK内部使用
 */
- (SKProduct *)iapGetCacheProductWithProductId:(NSString *)productId;

/**
 * 获取第一个缓存的商品对象，用于读取商店地区
 */
- (SKProduct *_Nullable)iapGetAProduct;

/**
 * 商店区域发送改变，重新请求及缓存商品
 */
- (void)reRequestProductInfo;

@end

NS_ASSUME_NONNULL_END
